<?php

/**
 * Classe para controle da sessão. Realiza tarefas de adição, alteração e exclusão de dados na sessão.
 *
 * @param String $sessionName - Identificação da posição em que os dados serão armazenados na sessão.
 *
 * @author Bruno E. Fuhr [brunofuhr@yahoo.com.br]
 * @since 11/05/2011
*/
class FSessionManager
{
    private $sessionName;

    public function __construct($sessionName)
    {
        $this->sessionName = $sessionName;

        $this->createSession();
    }

    private function getSessionName()
    {
        return $this->sessionName;
    }

    private function setSessionName($sessionName)
    {
        $this->sessionName = $sessionName;
    }

    private function createSession()
    {
        session_start();
    }
    
    public function getData($all = true)
    {
        $data = $_SESSION[$this->getSessionName()];
        
        return $data;
    }

    public function getDataAt($index)
    {
        return $_SESSION[$this->getSessionName()][$index];
    }
    
    public function setData($data)
    {
        $_SESSION[$this->getSessionName()] = $data;
    }

    public function setDataAt($index, $data)
    {
        $_SESSION[$this->getSessionName()][$index] = $data;
    }
    
    public function addDataAt($index, $data)
    {
        $_SESSION[$this->getSessionName()][$index][] = $data;
    }

    public function editData($line, $mode = 'edit')
    {
        // TODO
    }
    
    public function removeDataAt($index)
    {
        $_SESSION[$this->getSessionName()][$index] = array();
    }
    
    public function destroySession()
    {
        $_SESSION[$this->getSessionName()] = array();
    }
}

?>
